package estacion.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import estacion.dominio.Autobus;
import estacion.dominio.Linea;
import estacion.dominio.Tren;
import estacion.dominio.Vehiculo;

public class FPTren {

	public static void insertTren(Tren tr) throws Exception {
		String SQL="Insert into vehiculo(codigo_vehiculo, licencia_necesitada, capacidad_personas, matricula, marca, modelo, Codigo_linea) " +
				"values('"+tr.getCodigo_vehiculo()+"', '"+tr.get_Licencia_necesitada()+"', "+tr.get_capacidadPersonas()+", '"+tr.get_Matricula()+"', '"+tr.get_Marca()+"','"+tr.get_Modelo()+"',"+tr.getLinea().getCodigo_linea()+")";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}

	public static void deleteTren(String codigo) throws Exception {
		String SQL="Delete from vehiculo where codigo_vehiculo=?";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.setString(1, codigo);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}	
	}
	
	
	public static Tren consultTren(String codigo) throws Exception {
		Tren tr=null;		
		String SQL="Select * from vehiculo where codigo_vehiculo='"+codigo+"'";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				tr=new Tren();
				tr.setCodigo_vehiculo(r.getString("codigo_vehiculo"));
				tr.set_Licencia_necesitada(r.getString("licencia_necesitada"));
				tr.set_capacidadPersonas(r.getInt("capacidad_personas"));
				tr.set_Matricula(r.getString("matricula"));
				tr.set_Marca(r.getString("marca"));
				tr.set_Modelo(r.getString("modelo"));
				Linea l=new Linea();
				l=l.consultarLinea((r.getInt("Codigo_linea")));
				tr.setLinea(l);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return tr;
	}
	
	public static Tren consultTrenLinea(int codigo_linea) throws Exception {
		Tren tr=null;		
		String SQL="Select * from vehiculo where Codigo_linea='"+codigo_linea+"'";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				tr=new Tren();
				tr.setCodigo_vehiculo(r.getString("codigo_vehiculo"));
				tr.set_Licencia_necesitada(r.getString("licencia_necesitada"));
				tr.set_capacidadPersonas(r.getInt("capacidad_personas"));
				tr.set_Matricula(r.getString("matricula"));
				tr.set_Marca(r.getString("marca"));
				tr.set_Modelo(r.getString("modelo"));
				Linea l=new Linea();
				l=l.consultarLinea((r.getInt("Codigo_linea")));
				tr.setLinea(l);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return tr;
	}
	
	
	public static void modificarTren(Tren tr, String codigo) throws Exception{
		
		String SQL="UPDATE vehiculo SET licencia_necesitada='"+tr.get_Licencia_necesitada()+"', capacidad_personas="+tr.get_capacidadPersonas()+", matricula='"+tr.get_Matricula()+"', marca='"+tr.get_Marca()+"', modelo='"+tr.get_Modelo()+"',Codigo_linea="+tr.getLinea().getCodigo_linea()+" where codigo_vehiculo= '"+codigo+"'";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement update=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			update=bd.prepareStatement(SQL);
			update.executeUpdate();			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}
	
	public static Vector<Vehiculo> getTrenes() throws Exception {
		Vector<Vehiculo> result=new Vector<Vehiculo>();
		String SQL="Select * from vehiculo where licencia_necesitada='tren'";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				Tren tr=new Tren();
				tr.setCodigo_vehiculo(r.getString("codigo_vehiculo"));
				tr.set_Licencia_necesitada(r.getString("licencia_necesitada"));
				tr.set_capacidadPersonas(r.getInt("capacidad_personas"));
				tr.set_Matricula(r.getString("matricula"));
				tr.set_Marca(r.getString("marca"));
				tr.set_Modelo(r.getString("modelo"));
				Linea l=new Linea();
				l=l.consultarLinea((r.getInt("Codigo_linea")));
				tr.setLinea(l);
				result.add(tr);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return result;
	}
}
